//Objeto que controla la creacion de objetos en el servidor
ajax = new Object();
ajax.req = new Array();
//alert(navigator.appName);
ajax.ie = navigator.appName=="Microsoft Internet Explorer" ? true : false;

//DEFINICION DE CONDICIONALES DE CREACCION
ajax.req['OPTION'] = "arg['value']&&arg['text']";
ajax.req['TEXTNODE'] = "arg['value']";
//FIN DE LA DEFINICION DE LAS CONDICIONALES DE CREACION
ajax.create = function()
{
    //parsea el argumento arg si es que existe
    ele = arguments[0];
    dad = arguments[1];
    arg = new Array;
    if(arguments.length>=1)
    {
        for(x = 2;x < arguments.length; x++)
        {
            arg[x-2] = arguments[x];
        }

        var cache = new Array;
        for(var x = 0; arg[x]; x++)
        {
            temp = arg[x].split('::');
            cache[temp[0].toLowerCase()]=temp[1];
        }
        arg = cache;
        delete cache;
        delete temp;
    }
    else
    {
        arg = new Array();
    }
    //flag que controla la creaccion del objeto
    var elementok = true;

    if(ajax.req[ele.toUpperCase()])
    {
        elementok = eval(ajax.req[ele.toUpperCase()]) ? true : false;
    }
    // crea el elemento
    if(elementok == true)
    {
        switch(ele.toUpperCase())
        {
        case 'TEXTNODE':
            element = document.createTextNode(arg['value']);
            delete arg['value'];
            break;
        case 'INPUTPASSWORD':
            if(ajax.ie)
            {
                element = document.createElement("<input type='password'>");
            }
            else
            {
                element = document.createElement("INPUT");
                element.type='password';
            }
            delete arg['type'];
            break;
        case 'BUTTON':
            if(ajax.ie)
            {
                element = document.createElement("<input type='button'>");
            }
            else
            {
                element = document.createElement("INPUT");
                element.type='button';
            }
            delete arg['type'];
            break;
        default:
            element = document.createElement(ele.toUpperCase());
            break;
        }
    }
    else
    {
        alert(ele+' elemento no fue creado porque no tiene los parametros necesarios');
    }

    //Setea los attributos indicados en arg
    for(key in arg)
    {
        switch(key)
        {
        case 'top':
        case 'left':
                eval('element.style.'+key+'="'+arg[key]+'";');
                break;
        case 'content':
            element.innerHTML=arg[key];
            break;
        case 'text':
        case 'value':
        case 'name':
	case 'size':
            eval('element.'+key+'="'+arg[key]+'";');
            break;
        case 'class':
            if(ajax.ie)
            {
                element.setAttribute('className',arg[key]);
                break;
            }
	case 'valign':
            if(ajax.ie)
            {
                element.vAlign = arg[key];
                break;
            }
	case 'align':
            if(ajax.ie)
            {
                element.align = arg[key];
                break;
            }
	case 'rowspan':
            if(ajax.ie)
            {
                element.rowSpan = arg[key];
                break;
            }
	case 'colspan':
            if(ajax.ie)
            {
                element.colSpan = arg[key];
                break;
            }
	case 'onclick':
	case 'onkeypress':
	case 'onchange':
	case 'onkeyup':
	case 'onkeydown':
	case 'onmouseover':
	case 'onmouseout':
	case 'onmouseup':
	case 'onmousedown':
            if(ajax.ie)
            {
                eval('element.'+key+' = function (){'+arg[key]+'}');
                break;
            }
	default:
            element.setAttribute(key,arg[key]);
            break;
	}
  }
 // define de quien va a ser hijo si se especifica null no lo attacha a ningun padre
    if(element.tagName=='OPTION' && elementok)
    {
        try
        {
            dad.add(element,null);
        }
        catch(ex)
        {
            dad.add(element);
        }
    }
    else if(dad != null && elementok)
    {
        dad.appendChild(element);
    }
    // retorna el elemento creado si fue creado correctamente
    return elementok == true ? element : null;
};
